МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
Звіт
з лабораторної роботи № 8
”ОРГАНІЗАЦІЯ ПІДПРОГРАМ ТА ВИВЧЕННЯ ОСНОВНИХ ОПЕРАЦІЙ ПЕРЕХОДІВ МП INTEL 8086(80286)”
Виконала:
студентка гр. КН 3
Львів 2003МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
Звіт
з лабораторної роботи № 8
”ОРГАНІЗАЦІЯ ПІДПРОГРАМ ТА ВИВЧЕННЯ ОСНОВНИХ ОПЕРАЦІЙ ПЕРЕХОДІВ МП INTEL 8086(80286)”
Виконав:
студент гр. КН-37
Данчук Є.С.
Перевірив:
Герус В.А.
Львів 2003
Мета роботи
Отримати навички організації підпрограм та вивчити основні операції переходів МП Intel 8086(80286).
Теоретичні відомості
В прикладних програмах часто виникає необхідність декілька разів виконувати одну і ту ж послідовність команд над різними вхідними даними. В такому випадку зручно запрограмувати дану послідовність команд у вигляді підпрограми.
В асемблері Intel 8086(80286) таку підпрограму організовують, як процедуру з параметром NEAR, а саме:
АА PROC NEAR
...
...
RET
АА ENDP
Параметр NEAR вказує, що дана процедура не є точкою входу.
Кодовий сегмент асемблерної програми може містити будь-яку кількість процедур.
Серед них є процедура, яка містить адресу точки входу для виконання програми і володіє параметром FAR. Цю процедуру назвемо "основною", а всі інші другорядними. Викликати другорядні процедури можна за допомогою оператора CALL, формат якого такий:
CALL <адреса>,
де <адреса > - ім'я процедури.
Наведемо приклад програми, в якій присутня "основна" процедура та другорядні процедури:
CODESG SEGMENT PARA
BEGIN PROC FAR
...
CALL AA
CALL BB
RET
BEGIN ENDP
AA PROC NEAR
...
RET
AA ENDP
BB PROC NEAR
...
RET
BB ENDP
CODESG ENDS
END BEGIN
Отже, у вище наведеному сегменті коду присутні три процедури. Основна з іменем BEGIN та дві другорядні з іменами АА і ВВ. Ім'я BEGIN є адресою точки входу в основну програму. Процедура BEGIN викликає дві процедури АА та ВВ, які оператором RET повертають керування в основну процедуру. Оператор RET в процедурі BEGIN повертає керування в DOS. При відсутності оператора в основній процедурі буде виконуватися процедура АА. Відсутність оператора RET у процедурах АА :та ВВ може призвести до непередбачених наслідків.
Для зміни нормальної послідовності кроків в асемблерній програми призначена команда JMP форма запису якої має такий вигляд:
JMP А100
…
А100:
У цьому випадку команда JMP безумовно передає керування на мітку А100.
Окрім команди безумовного переходу, є команди умовних переходів, які тісно пов'язані з регістром прапорців. Цей регістр містить 16 бітів прапорців, які керують різними командами для індикації стану операції.
Регістр стану містить дев'ять прапорців:
Номер біту: 15,14,13,12,11,10, 9,8, | 7,6,5,4, 3, 2,1,0
Прапорець: *, *, *, *, О, D, I, T, |S,Z,*,A,*, P,*,C
Прапорці S,Z,A,P,C аналогічні до регістра прапорців МП КР580ИК80А (Intel 8080).
Т - прапорець трасування. Якщо цей прапорець встановлений в одиницю, то процесор переходить в покроковий режим виконання програми, тобто: в кожний момент часу виконується лише один оператор.
D - прапорець напрямку. Використовується при стрічкових операціях для визначення напрямку передачі даних, якщо D=0 , то дані передаються зліва направо, а при одиниці все навпаки.
І - прапорець переривань. При I=0 переривання заборонені, а якщо I=1 - дозволені.
О - прапорець переповнення. Фіксує арифметичні переповнення, т...